<?
/**
 * Clase que gestiona las conexiones a la BBDD.
 * 
 * @package Core
 * @version 0.1
 * @author 
 * Antonio Irlandés García
 * 
 * Juan Ramón González Hidalgo
 * 
 * José Ignacio Ortiz de Galisteo Romero
 */
class MySQL{

	/**
	 * Conexión con la BBDD
	 *
	 * @var Object
	 */
	private $db_con;
	
	/**
	 * Servidor.
	 *
	 * @var string
	 */
	private $db_host;
	
	/**
	 * Puerto.
	 *
	 * @var string
	 */
	private $db_port;
	
	/**
	 * Nombre de la BBDD.
	 *
	 * @var unknown_type
	 */
	private $db_name;
	
	/**
	 * Usuario para la BBDD.
	 *
	 * @var string
	 */
	private $db_user;
	
	/**
	 * Password para la BBDD.
	 *
	 * @var string
	 */
	private $db_pass;

	/**
	 * Constructor de la clase.
	 * Establece las variables necesarias para conectarse, y se conecta.
	 * Los parámetros de conexión los obtiene a través de constantes predefinidas, con 
	 * el siguiente formato:
	 * 
	 * 	MYSQL_nombre_VARIABLE (por ejemplo MYSQL_LOCAL_SERVER)
	 * 
	 * Deben estar definidas:	SERVER, PORT, DDBB, USER y PASS
	 *
	 * @param string $nombre Nombre de la conexión a emplear.
	 */
	public function __construct($nombre = 'MYLIED'){
		$Validar = new Validar();
		
		if($Validar->cadena($nombre)){	
			eval("\$this->db_host = MYSQL_".$nombre."_SERVER;");
			eval("\$this->db_port = MYSQL_".$nombre."_PORT;");
			eval("\$this->db_name = MYSQL_".$nombre."_DDBB;");
			eval("\$this->db_user = MYSQL_".$nombre."_USER;");
			eval("\$this->db_pass = MYSQL_".$nombre."_PASS;");
		}
	}

	/**
	 * Establece la conexión a la BBDD.
	 */
	private function connect(){
		$this->db_con = @mysql_connect($this->db_host.":".$this->db_port, $this->db_user, $this->db_pass);

		if(!$this->db_con)
			throw new Exception("No se pudo establecer una conexión con la BBDD. Contacte con el administrador.");

		if(!@mysql_select_db($this->db_name, $this->db_con))
			throw new Exception("Hubo un problema con la conexión a la BBDD. Contacte con el administrador.");
			
		//mysql_query("SET NAMES 'utf8'");
	}

	/**
	 * Lanza una consulta contra la BBDD, y devuelve el resultado, o NULL en caso de error.
	 *
	 * @param string $query Consulta SQL.
	 * @return Object $result Recurso devuelto por una llamada a la función mysql_query. NULL en caso de error.
	 */
	public function query($query){
		$this->connect();
		if($result = mysql_query($query, $this->db_con))
			return $result;
		else
			return null;
	}
	
	/**
	 * Obtiene el ultimo ID generado por un INSERT con un campo autoincrement, 
	 * en la BBDD actual.
	 * 
	 * @return integer $id Id generado en el INSERT.
	 */
	public function last_insert_id(){
		  return @mysql_insert_id($this->db_con);
	}

	/**
	 * Cierra la conexión con la BBDD.
	 */
	public function close(){
		if($this->db_con)
			@mysql_close($this->db_con);
	}
}
?>
